草庐IT

C++ 内存分配

全部标签

windows - Windbg <未分类> 内存区域

我想确定eax寄存器实际指向[Stack或Heap]的位置。在下面的windbgoutput!addressoutput中显示它未分类。0:014>reax=01198ce8ebx=00000000ecx=01198bf8edx=00000000esi=01196ed8edi=01198160eip=0710a501esp=01e8fdc8ebp=01e8fe28iopl=0nvupeiplnznaponccs=001bss=0023ds=0023es=0023fs=0038gs=0000efl=00000202libmp4v2!MP4GetVideoProfileLevel+0x3b

windows - 内存范围内的 Windbg 中断

如何为特定内存范围设置访问中断?ba只接受一个地址。除非没有其他办法,否则我宁愿不写脚本。 最佳答案 您必须开发一个插件才能在Windbg中执行此操作。Thispage描述了开发此类插件的逻辑。或者您可以尝试Ollydbg,因为最新版本能够为内存范围设置断点。 关于windows-内存范围内的Windbg中断,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20168228/

我可以获得内存中已有数据支持的 FILE* 吗?

我的代码目前使用一个库,我将FILE*传递给该库,它使用fread()CRTAPI读取一堆复杂的配置数据。我想移动文件以成为文件中的嵌入式资源(WindowsDLL)。不幸的是,读取Windows资源会直接将数据作为void*....我无法传递给图书馆。我想要的是能够获得一个由内存缓冲区而不是磁盘上的文件支持的FILE*。Windows有CreateStreamOnHGlobal(),但它使用IStream*,我需要一个FILE*。不幸的是,我找不到适用于Windows的任何解决方案。这可能吗?我可以使用的解决方案是将资源数据写入临时文件,将临时文件传递给配置解析器,然后删除文件...

c++ - 如何限制进程可用的内存?

这个问题在这里已经有了答案:SetWindowsprocess(oruser)memorylimit(5个答案)关闭8年前。假设我有两个进程。一个关键,一个很高兴有流程。现在,假设进程开始泄漏内存是件好事。如何阻止泄漏进程耗尽所有系统内存并导致关键进程崩溃或变慢?我希望非关键进程在使用的内存超过特定阈值时简单地终止或抛出std::bad_alloc。

windows - 如何使用 perfmon 记录 Windows 进程的内存消耗?

我是perfmon的新手,我正在尝试使用该工具来检查Windows7中给定的单个进程的内存消耗(以检查内存泄漏)。在perfmon中,我创建了一个新的DataCollector并尝试添加一个新的计数器。在Availablecounter列表中,我看到条目Process,它有几个子计数器(例如,'HandleCount'),我可以从中选择一个实例我希望被监控的过程。但是在子计数器列表中(正在处理中)我没有找到一个名为“内存”或其他的字段。但是,在Availablecounter列表中还有一个名为“Memory”的条目,它有几个子条目。但是无论选择哪一个子条目,都没有我可以选择的实例!那么

c - 调度程序不考虑 OpenCL 子设备亲和性

我正在尝试编写一个在特定CPU上执行内核的OpenCL概念验证应用程序(因此将来可以扩展为NUMA感知并为相应NUMA上的内核执行分配内存-节点,正如指出的intheIntelDevforums)。不幸的是,Windows调度程序并不关心我想要什么,因为它似乎通过所有可用的CPU内核来循环我的内核(因此远离本地内存)。我现在正在使用CL_DEVICE_PARTITION_BY_COUNTS属性创建一个只有一个执行单元的子设备,然后我在这个子设备上执行内核。尽管如此,当我观察Windows的CPU使用率时,并不是单个内核繁忙,而是多个内核的工作负载出现峰值(除非我使用任务管理器手动将进程

c++ - 将 FILE * 或 HANDLE 转换(分配)到 Windows 中的 IStream

想要编写一个函数,该函数期望一个文件的打开句柄,并且出于某些目的将其转换为IStream以与Wrapper库进行交互我知道的一种方法是,我可以从HANDLE获得一个FILE*,但是我没有得到任何方法来将此FILE*或HANDLE直接转换或分配给IStream(COM)。 最佳答案 你可以试试getfilenamefromHANDLE然后createIStream从路径。 关于c++-将FILE*或HANDLE转换(分配)到Windows中的IStream,我们在StackOverflow

php - 是否可以在 Windows 中的 PHP 和 C 之间共享内存?

您可以在Windows中的PHP脚本和C/C++程序之间使用共享内存吗?例如,通过使用PHP共享内存(link)和Windows内存映射文件? 最佳答案 我认为如果您创建自己的PHP扩展程序是可能的。据我所知,PHP扩展是用C语言编写的。可能已经有一些扩展来做这件事。更新:看起来这是可能的。请查看官方文档中的这一章:http://php.net/manual/en/book.shmop.php.这是一些例子:http://www.raspberry-projects.com/pi/programming-in-c/memory/sh

c++ - 如何使用命名共享内存?

今天我正在尝试在进程(2个DLL)之间共享内存。现在我只想分享文本以便进行一些调试。我似乎设法创建了命名的共享内存并读取了它,但读取后内存似乎是空的。我可能做错了什么?VOIDsharedMemory(){if(CreateSharedMemory(TEXT("Global\testMem"),TEXT("hellosharedmemory"))){out=out+"|createdsharedmemory";}else{out=out+"|failedtocreatesharedmemory";}wchar_tdata[100];if(ReadSharedMemory(TEXT("G

c++ - 强制第 3 方 DirectShow 过滤器使用自定义分配器

在第3方过滤器中使用自定义分配器的原因:我有一个NUMA系统,过滤器在错误的NUMA节点上分配内存会导致性能问题并丢弃从相机接收的图像。我目前的做法:我将编写一个函数来迭代所有过滤器并询问它们的输入引脚是否有分配器。然后我向这个分配器询问我的特殊分配器接口(interface),最后如果没有找到接口(interface)我创建新的自定义分配器并应用与以前的分配器相同的属性。然后我在输入引脚上调用NotifyAllocator以通知它有关新分配器的信息。我试图在图形构建的不同时间调用这个函数;目前在IMediaControl::Pause之后和IMediaControl::Run之前,但